﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using BusinessLogicTier.BLL;
using BusinessLogicTier.DAL;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BusinessLogicTier.DAL.DataContext;
using Core;
using System.IO;
using QLBH.Danhmuc;

namespace QLBH
{
    public partial class FrmLogin : DevExpress.XtraEditors.XtraForm
    {
        Utils util = new Utils();
        private static string tenTaikhoan = "", matKhau = "";
        //public Form.FormMain FrmMain;
        private FrmConnection m_Connection = null;
        private FrmMain fMain = new FrmMain();
        public FrmLogin()
        {
            InitializeComponent();
        }
        private void btnThoat_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void btnDangNhap_Click(object sender, EventArgs e)
        {
            string TaiKhoan = txtTaiKhoan.Text.Trim();
            string MatKhau = txtMatKhau.Text.Trim();
            string SaveLog = chkNhoMatKhau.Checked ? "1" : "0";
            tenTaikhoan = txtTaiKhoan.Text.Trim();
            matKhau = txtMatKhau.Text.Trim();
            if (TaiKhoan == "")
            {
                MessageBox.Show("Bạn chưa nhập tài khoản", "Thông báo");
                txtTaiKhoan.Focus();
                return;
            }

            if (MatKhau == "")
            {
                MessageBox.Show("Bạn chưa nhập mật khẩu", "Thông báo");
                txtMatKhau.Focus();
                return;
            }

            NguoiDung_BLL logicND = new NguoiDung_BLL();
            tbl_NguoiDung objND = logicND.SelectByUserName(TaiKhoan);

            if (objND != null)
            {
                util.ClearTextConfig();
                string MaHoaMK = util.EncryptCode(MatKhau, Utils.sKeyEncripts, false);
                if (objND.QuanLy == false)
                {
                    MessageBox.Show("Người dùng này chưa được kích hoạt!", "Thông báo");
                    return;
                }
                if (objND.MatKhau == MaHoaMK)
                {
                    try
                    {
                        util.WriteTextConfig(int.Parse(objND.ID.ToString()), objND.TaiKhoan, MatKhau, int.Parse(objND.fk_VaiTro.Value.ToString()), "", SaveLog);
                        this.Hide();
                        string NhoTk = util.GetSaveLog();
                        if (NhoTk == Utils.ACTION_SAVE_LOGIN)
                        {
                            string pass = util.GetPassWord();
                            string userName = util.GetUserName();
                            txtTaiKhoan.Text = userName;
                            txtMatKhau.Text = pass;
                            chkNhoMatKhau.Checked = true;
                        }
                        else
                        {
                            txtTaiKhoan.Text = "";
                            txtMatKhau.Text = "";
                            chkNhoMatKhau.Checked = false;
                        }
                        tenTaikhoan = txtTaiKhoan.Text.Trim();
                        matKhau = txtMatKhau.Text.Trim();
                        tenTaikhoan = "";
                        matKhau = "";
                        //Chuyen trang
                        //DHPD_QLCBCC.Form.FormMain fMain = new DHPD_QLCBCC.Form.FormMain();
                        fMain.ShowDialog();
                        //this.Show();
                        
                       
                    }
                    catch (Exception ex)
                    {
                        Log _logFile = new Log();
                        _logFile.Write("Exception when using frmLogin.cs => btnDangNhap_Click : " + ex.Message + " Source:" + ex.Source + " StackTrace:" + ex.StackTrace);
                    }
                }
                else
                {
                    MessageBox.Show("Mật khẩu không chính xác!", "Thông báo");
                    return;
                }
            }
            else
            {
                MessageBox.Show("Tài khoản không chính xác!", "Thông báo");
                return;
            }
        }
        private void chkNhoMatKhau_CheckedChanged(object sender, EventArgs e)
        {
            chkAutoLogin.Enabled = chkNhoMatKhau.Checked;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            btnDangNhap_Click(null, null);
        }
        private void btnCauHinh_Click(object sender, EventArgs e)
        {
        }
        private void FrmLogin_Load(object sender, EventArgs e)
        {
            DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Caramel");
            DMKetnoi_BLL DMKetnoi_BLL = new DMKetnoi_BLL();
            if (DMKetnoi_BLL.OpenConnection())
            {
                this.Show();
            }
            else
            {
                ReConnection();
            }
            string SaveLog = util.GetSaveLog();
            if (SaveLog == Utils.ACTION_SAVE_LOGIN)
            {
                string pass = util.GetPassWord();
                string userName = util.GetUserName();
                txtTaiKhoan.Text = userName;
                txtMatKhau.Text = pass;
                chkNhoMatKhau.Checked = true;

                if (chkAutoLogin.Checked)
                    timer1.Start();
            }
            txtTaiKhoan.Focus();
        }
        public void ReConnection()
        {
            MessageBox.Show("Lỗi kết nối đến cơ sở dữ liệu! Xin vui lòng thiết lập lại kết nối...", "ERROR", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            if (m_Connection == null || m_Connection.IsDisposed)
                m_Connection = new FrmConnection();

            if (m_Connection.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show("Đã thiết lập kết nối cho lần chạy đầu tiên.\nHãy khởi động lại chương trình để thực thi kết nối!", "Successed", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
            else
                return;
        }
        private void timer1_Tick_1(object sender, EventArgs e)
        {
            timer1.Stop();
            btnDangNhap_Click(null, null);
        }
        private void btnketnoi_Click(object sender, EventArgs e)
        {
            ReConnection();
        }
    }
}